Using R code in your presentation
Example of some code
mpg cyl disp hp drat wt qsec vs
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0 Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
Median :19.20 Median :6.000 Median :196.3 Median :123.0 Median :3.695 Median :3.325 Median :17.71 Median :0.0000
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7 Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0 Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
am gear carb
Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :0.0000 Median :4.000 Median :2.000
Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :1.0000 Max. :5.000 Max. :8.000
Inline code
So, sqrt(81)*4*pi becomes 113.0973355.
Import some data
I_jean <- read.delim("http://bit.ly/avml_ggplot2_data")
head(I_jean)
Static plots
p <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) +
geom_bar(width = 0.8, position = "dodge", colour = "black")
p

Make more plots!
# Code from https://jofrhwld.github.io/avml2012/
# Taken as an example only under fair-use practice
# All rights reserved by the original author
p <- ggplot(I_jean, aes(x = Dur_msec, y = F1.n)) +
geom_point() +
stat_smooth(method="loess") +
scale_x_log10(breaks = c(50, 100,200,300,400)) +
scale_y_reverse() +
ylab("Normalized F1") +
xlab("Vowel duration (msec)") +
theme_bw() +
labs(title = "394 tokens of 'I' from one speaker")
ggplotly(p)
Making a reveal.js presentation
R Markdown with embedded R code
“But I hate / don’t use R…”
“But I don’t want to install R and its packages…”
Using RStudio in your browser
- Caveat! Non-R engines don’t work out of the box
- Create a directory for your project
- Add this
Dockerfile and this docker-compose.yml to the directory
- Run
$ docker-compose up -d
- Open RStudio in your browser at
localhost:8787 or 0.0.0.0:8787
- Log in with “
rstudio” as both the username and password
- To shutdown:
$ docker-compose down
Questions?
LS0tCnRpdGxlOiAiSW50ZXJhY3RpdmUsIGFubm90YXRhYmxlLCBjb2RlLWRyaXZlbiBwcmVzZW50YXRpb25zIgphdXRob3I6ICJBY2hpbnR5YSBSYW8iCmRhdGU6ICIxOSBNYXkgMjAxNyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGZpZ19jYXB0aW9uOiB5ZXMKICAgIGhpZ2hsaWdodDogdGFuZ28KICAgIHRoZW1lOiB1bml0ZWQKICAgIHRvYzogeWVzCi0tLQoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHlwb3RoZXMuaXMvZW1iZWQuanMiIGFzeW5jPjwvc2NyaXB0PgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpsaWJyYXJ5KHBsb3RseSkKYGBgCgojIFRoZSBpbnNwaXJhdGlvbiEKCiFbRDMgdmlzdWFsaXNhdGlvbnMgYnkgRWFtb25uIE1hZ3VpcmVdKC4uL2ltYWdlcy9kMy5naWYpCgotIFtDcmVhdGluZyBWaXN1YWxpemF0aW9ucyB3aXRoIEQzXShodHRwOi8vYW50YXJjdGljLWRlc2lnbi5jby51ay9iaW92aXMtd29ya3Nob3AxNS8pIGJ5IFtFYW1vbm4gTWFndWlyZV0oaHR0cHM6Ly9naXRodWIuY29tL2VhbW9ubm1hZykKCiMgVXNpbmcgUiBjb2RlIGluIHlvdXIgcHJlc2VudGF0aW9uCgojIyBFeGFtcGxlIG9mIHNvbWUgY29kZQoKYGBge3IgY2Fyc30Kc3VtbWFyeShtdGNhcnMpCmBgYAoKIyMgSW5saW5lIGNvZGUKClNvLCBgc3FydCg4MSkqNCpwaWAgYmVjb21lcyBgciBzcXJ0KDgxKSo0KnBpYC4KCiMjIEltcG9ydCBzb21lIGRhdGEKCmBgYHtyfQpJX2plYW4gPC0gcmVhZC5kZWxpbSgiaHR0cDovL2JpdC5seS9hdm1sX2dncGxvdDJfZGF0YSIpCmhlYWQoSV9qZWFuKQpgYGAKCi0gU291cmNlOiBbaHR0cHM6Ly9qb2ZyaHdsZC5naXRodWIuaW8vYXZtbDIwMTIvXShodHRwczovL2pvZnJod2xkLmdpdGh1Yi5pby9hdm1sMjAxMi8pCgojIyBTdGF0aWMgcGxvdHMKCmBgYHtyfQoKcCA8LSBnZ3Bsb3QobXRjYXJzLCBhZXMoeCA9IGZhY3RvcigxKSwgZmlsbCA9IGZhY3RvcihjeWwpKSkgKyAKICBnZW9tX2Jhcih3aWR0aCA9IDAuOCwgcG9zaXRpb24gPSAiZG9kZ2UiLCBjb2xvdXIgPSAiYmxhY2siKQoKcApgYGAKCiMjIEludGVyYWN0aXZlIHBsb3RzIQoKYGBge3IsIHdhcm5pbmc9RkFMU0V9CmdncGxvdGx5KHApCmBgYAoKIyMgTWFrZSBtb3JlIHBsb3RzIQoKYGBge3IsIHdhcm5pbmc9RkFMU0V9CgojIENvZGUgZnJvbSBodHRwczovL2pvZnJod2xkLmdpdGh1Yi5pby9hdm1sMjAxMi8KIyBUYWtlbiBhcyBhbiBleGFtcGxlIG9ubHkgdW5kZXIgZmFpci11c2UgcHJhY3RpY2UKIyBBbGwgcmlnaHRzIHJlc2VydmVkIGJ5IHRoZSBvcmlnaW5hbCBhdXRob3IKCnAgPC0gZ2dwbG90KElfamVhbiwgYWVzKHggPSBEdXJfbXNlYywgeSA9IEYxLm4pKSArIAogIGdlb21fcG9pbnQoKSArIAogIHN0YXRfc21vb3RoKG1ldGhvZD0ibG9lc3MiKSArCiAgc2NhbGVfeF9sb2cxMChicmVha3MgPSBjKDUwLCAxMDAsMjAwLDMwMCw0MDApKSArCiAgc2NhbGVfeV9yZXZlcnNlKCkgKwogIHlsYWIoIk5vcm1hbGl6ZWQgRjEiKSArCiAgeGxhYigiVm93ZWwgZHVyYXRpb24gKG1zZWMpIikgKwogIHRoZW1lX2J3KCkgKwogIGxhYnModGl0bGUgPSAiMzk0IHRva2VucyBvZiAnSScgZnJvbSBvbmUgc3BlYWtlciIpCgpnZ3Bsb3RseShwKQpgYGAKCiMgTWFraW5nIGEgcmV2ZWFsLmpzIHByZXNlbnRhdGlvbgoKIyMgUiBNYXJrZG93biB3aXRoIGVtYmVkZGVkIFIgY29kZQoKLSBbU291cmNlXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vUmFvT2ZQaHlzaWNzL2NvbnRhaW5lZC1yZXZlYWxyL2doLXBhZ2VzL2luZGV4LlJtZCkKLSBIb3N0ZWQgb24gR2l0SHViOiBbUmFvT2ZQaHlzaWNzL2NvbnRhaW5lZC1yZXZlYWxyXShodHRwczovL2dpdGh1Yi5jb20vUmFvT2ZQaHlzaWNzL2NvbnRhaW5lZC1yZXZlYWxyKQotIERpc3BsYXllZCB1c2luZyBbR2l0SHViIFBhZ2VzXShodHRwczovL3BhZ2VzLmdpdGh1Yi5jb20vKTogW3Jhb29mcGh5c2ljcy5naXRodWIuaW8vY29udGFpbmVkLXJldmVhbHJdKGh0dHBzOi8vcmFvb2ZwaHlzaWNzLmdpdGh1Yi5pby9jb250YWluZWQtcmV2ZWFscikKLSBBbm5vdGF0YWJsZSB1c2luZyBbSHlwb3RoZXNpc10oaHR0cHM6Ly9oeXBvdGhlcy5pcyk6CiAgICAtIEFkZCBgPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHlwb3RoZXMuaXMvZW1iZWQuanMiIGFzeW5jPjwvc2NyaXB0PmAKCiMjIFRoZSBzb3VyY2UgZmlsZSBpdHNlbGYKCi0gQ3JlYXRlIGEgbmV3IGBSIE1hcmtkb3duYCBmaWxlIG5hbWVkIGBpbmRleC5SbWRgCiAgICAtIFNlbGVjdCByZXZlYWwuanMgZnJvbSB0ZW1wbGF0ZXMKLSBBZGQgW1lBTUxdKGh0dHA6Ly93d3cueWFtbC5vcmcvKSBmcm9udG1hdHRlciEKLSBJbnN0cnVjdGlvbnMgZm9yIHJldmVhbC5qcyBwcmVzZW50YXRpb25zOiBbcm1hcmtkb3duLnJzdHVkaW8uY29tL3JldmVhbGpzX3ByZXNlbnRhdGlvbl9mb3JtYXQuaHRtbF0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbS9yZXZlYWxqc19wcmVzZW50YXRpb25fZm9ybWF0Lmh0bWwpCi0gQ3JlYXRlIHNlY3Rpb25zIGFuZCBhZGQgY29udGVudCtjb2RlCi0gS25pdCB5b3VyIHByZXNlbnRhdGlvbiEKCiMgIkJ1dCBJIGhhdGUgLyBkb24ndCB1c2UgUuKApiIKCiMjIE90aGVyICJlbmdpbmVzIiBmb3IgY29kZSBjaHVua3MKCnwgTGFuZ3VhZ2UgfCBJbiBSTWFya2Rvd24gfCBQbG90bHkgYXZhaWxhYmxlIHwKfC0tLS0tOnw6LS0tLS06fDotLS0tLTp8CnwgUHl0aG9uICAgICAgfCBbWWVzXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tL2F1dGhvcmluZ19rbml0cl9lbmdpbmVzLmh0bWwjcHl0aG9uKSB8IFtZZXNdKGh0dHBzOi8vcGxvdC5seS9weXRob24vZ2V0dGluZy1zdGFydGVkLykgfAp8IEphdmFTY3JpcHQgfCBbWWVzXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tL2F1dGhvcmluZ19rbml0cl9lbmdpbmVzLmh0bWwjamF2YXNjcmlwdCkgfCBbWWVzXShodHRwczovL3Bsb3QubHkvamF2YXNjcmlwdC9nZXR0aW5nLXN0YXJ0ZWQvKSB8CnwgU1FMIHwgW1llc10oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbS9hdXRob3Jpbmdfa25pdHJfZW5naW5lcy5odG1sI3NxbCkgfCBObyB8CnwgQmFzaCB8IFtZZXNdKGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vYXV0aG9yaW5nX2tuaXRyX2VuZ2luZXMuaHRtbCNiYXNoKSB8IE5vIHwKCk1vcmU6IGh0dHA6Ly9ybWFya2Rvd24ucnN0dWRpby5jb20vYXV0aG9yaW5nX2tuaXRyX2VuZ2luZXMuaHRtbAoKIyAiQnV0IEkgZG9uJ3Qgd2FudCB0byBpbnN0YWxsIFIgYW5kIGl0cyBwYWNrYWdlc+KApiIKCiMjIFJTdHVkaW8gdmlhIERvY2tlcgoKIVtSU3R1ZGlvIHZpYSBEb2NrZXJdKC4uL2ltYWdlcy9yc3R1ZGlvLnBuZykKCiMjIFVzaW5nIFJTdHVkaW8gaW4geW91ciBicm93c2VyCgotICoqQ2F2ZWF0ISoqIE5vbi1SIGVuZ2luZXMgZG9uJ3Qgd29yayBvdXQgb2YgdGhlIGJveAotIENyZWF0ZSBhIGRpcmVjdG9yeSBmb3IgeW91ciBwcm9qZWN0Ci0gQWRkIHRoaXMgW2BEb2NrZXJmaWxlYF0oaHR0cHM6Ly9naXRodWIuY29tL1Jhb09mUGh5c2ljcy9jb250YWluZWQtcmV2ZWFsci9ibG9iL21hc3Rlci9Eb2NrZXJmaWxlKSBhbmQgdGhpcyBbYGRvY2tlci1jb21wb3NlLnltbGBdKGh0dHBzOi8vZ2l0aHViLmNvbS9SYW9PZlBoeXNpY3MvY29udGFpbmVkLXJldmVhbHIvYmxvYi9tYXN0ZXIvZG9ja2VyLWNvbXBvc2UueW1sKSB0byB0aGUgZGlyZWN0b3J5Ci0gUnVuIGAkIGRvY2tlci1jb21wb3NlIHVwIC1kYAotIE9wZW4gUlN0dWRpbyBpbiB5b3VyIGJyb3dzZXIgYXQgYGxvY2FsaG9zdDo4Nzg3YCBvciBgMC4wLjAuMDo4Nzg3YAotIExvZyBpbiB3aXRoICJgcnN0dWRpb2AiIGFzIGJvdGggdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZAotIFRvIHNodXRkb3duOiBgJCBkb2NrZXItY29tcG9zZSBkb3duYAoKIyBRdWVzdGlvbnM/